package com.education.common.utils;

import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import lombok.extern.slf4j.Slf4j;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

@Slf4j
public class HtmlUtil {

    public static void html2pdf(String htmlFilePath,String pdfFilePath) {
        try (InputStream htmlStream = new FileInputStream(htmlFilePath);
             OutputStream pdfStream = new FileOutputStream(pdfFilePath)) {
            // 创建 PdfWriter 实例
            PdfWriter writer = new PdfWriter(pdfStream);

            // 创建 PdfDocument 并设置自定义页面大小（例如宽 1300，高 900）
            PdfDocument pdfDoc = new PdfDocument(writer);
            pdfDoc.setDefaultPageSize(new PageSize(1050, 750));

            // 1. 使用系统已安装字体（最简单可靠的方式）
            ConverterProperties props = new ConverterProperties();
            DefaultFontProvider fontProvider = new DefaultFontProvider();
//            fontProvider.addSystemFonts();  // 自动加载所有系统字体
            fontProvider.addFont("src/main/resources/font/simhei.ttf");
            props.setFontProvider(fontProvider);

            // 2. 执行转换
            HtmlConverter.convertToPdf(htmlStream, pdfDoc, props);


        } catch (Exception e) {
            log.error("html2pdf error 文件转换失败", e);
            e.printStackTrace();
        }
    }
}
